RDS インスタンス削除時に自動生成されるスナップショットの消し忘れに注意
背景
検証のために RDS インスタンスを含む CDK スタックをデプロイし、その後検証を終えたので cdk destroy
を実行してスタックを削除しました。
RDS インスタンスは削除されましたが、スナップショットが生成されていることに気づきませんでした。
結果として、100 ドルの意図しない課金が発生していました。
消し忘れた原因
デプロイ時に RDS インスタンスの DeletionPolicy (RemovalPolicy) が未指定だったため、cdk destroy
時にスナップショットが自動生成されていました。
RDS インスタンスのデフォルトでは、RDS インスタンスの削除時にスナップショットを残すポリシー SNAPSHOT
となっています。
注記
例外: AWS::RDS::DBCluster リソースと、DBClusterIdentifier プロパティを指定しない AWS::RDS::DBInstance リソースのデフォルトポリシーは Snapshotです。
cdk destroy 時にスナップショットを生成させない
CDK では RemovalPolicy
を DESTROY
に設定することで、スナップショットを生成させることなく RDS インスタンスを削除することができました。
設定の一例:
まとめ
RemovalPolicy
を見直すことで、cdk destroy
時の意図しないスナップショットの生成を抑制できました。
ただし、データの削除に関わる部分であり、デフォルトでわざわざ SNAPSHOT
が適用されていることを考えると、DESTROY
ポリシーを適用するのはいつデータが消滅しても問題ない環境に限定するなど、十分に注意する必要があります。
また、今回の検証環境にはコスト監視・通知機能が組み込まれていたため、意図しない課金に早期に気づくことができました。
検証環境であってもコスト監視・管理をしておくことで、使いすぎを防ぐことができます。